﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;


using HHo_Model;
using HHo_Negocio;
using System.IO;

public partial class Consultas_wc_hh : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GestorTblParametros oGesPar = new GestorTblParametros();
            ListItem li = new ListItem();
            li.Text = StringConstantes.DDL_BIND_PARAM_TEXT_TODOS;
            li.Value = StringConstantes.DDL_BIND_PARAM_VAL_TODOS;

            ddlPrgNPrg.DataSource = oGesPar.ListaParametroPorGrupo(7);
            ddlPrgNPrg.DataTextField = StringConstantes.DDL_BIND_PARAM_VAL_TEXT_FIELD;
            ddlPrgNPrg.DataValueField = StringConstantes.DDL_BIND_PARAM_VAL_VALUE_FIELD;
            ddlPrgNPrg.DataBind();
            ddlPrgNPrg.Items.Add(li);
            ddlPrgNPrg.SelectedValue = li.Value;

            ddlParticipacion.DataSource = oGesPar.ListaParametroPorGrupo(5);
            ddlParticipacion.DataTextField = StringConstantes.DDL_BIND_PARAM_VAL_TEXT_FIELD;
            ddlParticipacion.DataValueField = StringConstantes.DDL_BIND_PARAM_VAL_VALUE_FIELD;
            ddlParticipacion.DataBind();
            ddlParticipacion.Items.Add(li);
            ddlParticipacion.SelectedValue = li.Value;


            GestorOrigen oGestOrigen = new GestorOrigen();
            ddlOrigen.DataSource = oGestOrigen.ListarOrigen();
            ddlOrigen.DataTextField = "Codigo";
            ddlOrigen.DataValueField = "Id";
            ddlOrigen.DataBind();
            ddlOrigen.Items.Add(li);
            ddlOrigen.SelectedValue = li.Value;

            GestorTipoTrabajo oGesTipoTrabajo = new GestorTipoTrabajo();
            ddlTipoTrabajo.DataSource = oGesTipoTrabajo.ConsultarTipoTrabajo(999, '1'); //'1', no considera el primer parametro
            ddlTipoTrabajo.DataTextField = "Descripcion";
            ddlTipoTrabajo.DataValueField = "Id";
            ddlTipoTrabajo.DataBind();
            ddlTipoTrabajo.Items.Add(li);
            ddlTipoTrabajo.SelectedValue = li.Value;
        }
    }
    //protected void btnConsultar_Click(object sender, EventArgs e)
    //{
    //    if ((txtFecPrg.Text.Length == 10) && (txtFecFin.Text.Length == 10))
    //    {
    //        char vista;
    //        int IdOrigen, IdTipoTrabajo, IdTipoParticip, IdPrgNPrg, IdCompon;
    //        string matAvion = "";
    //        IdOrigen = -99;
    //        IdTipoTrabajo = -99;
    //        IdTipoParticip = -99;
    //        IdPrgNPrg = -99;
    //        IdCompon = -99;

    //        try
    //        {
    //            if(txtMatAvion.Text.Trim().Length > 0)
    //                 matAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvion.Text);

    //            if (ddlOrigen.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
    //                IdOrigen = Int32.Parse(ddlOrigen.SelectedValue);

    //            if (ddlTipoTrabajo.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
    //                IdTipoTrabajo = Int32.Parse(ddlTipoTrabajo.SelectedValue);

    //            if (ddlParticipacion.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
    //                IdTipoParticip = Int32.Parse(ddlParticipacion.SelectedValue);

    //            if (ddlPrgNPrg.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
    //                IdPrgNPrg = Int32.Parse(ddlPrgNPrg.SelectedValue);

    //            if (hid_CodComponente.Value.Trim().Length > 0)
    //                IdCompon = Int32.Parse(hid_CodComponente.Value);

    //            GestorConsultas oGesCons = new GestorConsultas();
    //            if (radDetallado.Checked)
    //            {
    //                vista = 'D';
    //                gvTrab.DataSource = oGesCons.ConsultaHH(vista, txtFecPrg.Text, txtFecFin.Text, txtMatAvion.Text,
    //                    IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);
    //                gvTrab.DataBind();

    //                divConsolidado.Style.Remove("display");
    //                divConsolidado.Style.Add("display", "none");
    //                divDetallado.Style.Remove("display");
    //                divDetallado.Style.Add("display", "block");
    //            }
    //            else
    //            {
    //                vista = 'C';
    //                gvConsol.DataSource = oGesCons.ConsultaHH(vista, txtFecPrg.Text, txtFecFin.Text, txtMatAvion.Text,
    //                    IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);
    //                gvConsol.DataBind();

    //                divConsolidado.Style.Remove("display");
    //                divConsolidado.Style.Add("display", "block");
    //                divDetallado.Style.Remove("display");
    //                divDetallado.Style.Add("display", "none");

    //            }
    //        }
    //        catch (Exception ex)
    //        {
    //            lblMensaje.Text = "<strong>ERROR: Información Técnica</strong><br/>" + ex.Message;
    //        }
    //    }
    //    else
    //        lblMensaje.Text = "ERROR: La fecha de Inicio y la fecha de fin son obligatorios";
    //}


    protected void imgToExcel_Click(object sender, ImageClickEventArgs e)
    {
        ExportToExcel('D');
    }

    private string PrepareHTMLEtiqExcel()
    {
        string strLabel;
        strLabel = "<table border='1'><tr><td colspan='6' style='font:bold 14pt/14pt verdana; color:Navy'>CONSULTA DE HH</td></tr><tr><td>Fecha de Inicio</td><td>";
        strLabel += txtFecPrg.Text;
        strLabel += "</td><td>Fecha de Fin</td><td>";
        strLabel += txtFecFin.Text;
        strLabel += "</td></tr><tr><td>Avion</td><td>";
        strLabel += txtMatAvion.Text;
        strLabel += "</td><td>Origen</td><td>";
        strLabel += ddlOrigen.Items[ddlOrigen.SelectedIndex].Text;
        strLabel += "</td><td>Participación:</td><td>";            
        strLabel += ddlParticipacion.Items[ddlParticipacion.SelectedIndex].Text;
        strLabel += "</td></tr><tr><td>Trabajo Realizado:</td><td>";
        strLabel += ddlTipoTrabajo.Items[ddlTipoTrabajo.SelectedIndex].Text;
        strLabel += "</td><td>Descripción del Trabajo:</td>";
        strLabel += txtDescTrab.Text;
        strLabel += "</td></tr><tr><td>Código ATA:</td><td>";
        strLabel += txtCodAta.Text + "-" + txtCodSubAta.Text;
        strLabel += "</td><td>Componente</td><td>";
        strLabel += txtTextoComponente.Text;
        strLabel += "</td></tr><tr><td>Trabajo Prog / No Prg:</td><td>";
        strLabel += ddlPrgNPrg.Items[ddlPrgNPrg.SelectedIndex].Text;
        strLabel += "</td></tr></table>";        
        return strLabel;
    }



    private void ExportToExcel(char Vista)
    {
        GridView gv;
        if (Vista == 'D')
            gv = gvTrab;
        else
            gv = gvConsol;

        gv.AllowPaging = false;
        
        gv.DataSource = null;
        gv.DataBind();

        gv.DataSource = CargarDatos(Vista);
        gv.DataBind();




        string atachado = "attachment; filename=ConsHH.xls";
        Response.ClearContent();
        Response.Clear();
        Response.AddHeader("content-disposition", atachado);

        //Se supone debe abrir sin mostrar la ventanita de guardar
        //Response.Cache.SetCacheability(HttpCacheability.NoCache);

        //Response.ContentType = "application/vnd.ms-excel";
        Response.ContentType = "application/ms-excel";
        Response.Charset = "";
        this.EnableViewState = false;

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        HtmlForm frm = new HtmlForm();
        gv.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(gv);
        //sw.Write(PrepareHTMLEtiqExcel());
        //gvConsol.Parent.Controls.Add(frm);
        //frm.Controls.Add(gvConsol);
        
        sw.Write(PrepareHTMLEtiqExcel());

        frm.RenderControl(htw);
        //hidDataFiltro.RenderControl(htw);
        //gvResult.RenderControl(htw);        
        Response.Write(sw.ToString());
        Response.End();
    }
    protected void imgBuscaComp_Click(object sender, ImageClickEventArgs e)
    {
        txtTextoComponente.Text = "";
        GestorComponente oGestorComponente = new GestorComponente();
        string DatosComponente = oGestorComponente.ConsultarComponente(txtCodAta.Text,txtCodSubAta.Text, txtCodCompon.Text, "1");
        string[] vDatosComponente;
        if (DatosComponente != null)
        {
            vDatosComponente = DatosComponente.Split('|');
            hid_CodComponente.Value = vDatosComponente[0];
            txtTextoComponente.Text = vDatosComponente[4];
        }
        else
        {
            ClientScriptManager oClient = Page.ClientScript;
            oClient.RegisterStartupScript(this.GetType(), "Aviso", "alert('No existe datos para el componente ingresado, vuelva a ingresar los datos');", true);
        } 
    }
    protected void imgConsultar_Click(object sender, ImageClickEventArgs e)
    {
        Consultar();
    }



    private List<E_ConsultaHH> CargarDatos(char vista) {
                /* poblar el nuevo GV*/
        int IdOrigen, IdTipoTrabajo, IdTipoParticip, IdPrgNPrg, IdCompon;
        string matAvion = "";
        GestorConsultas oGesCons = new GestorConsultas();
        IdOrigen = -99;
        IdTipoTrabajo = -99;
        IdTipoParticip = -99;
        IdPrgNPrg = -99;
        IdCompon = -99;

        if (txtMatAvion.Text.Trim().Length > 0)
            matAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvion.Text);

        if (ddlOrigen.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdOrigen = Int32.Parse(ddlOrigen.SelectedValue);

        if (ddlTipoTrabajo.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdTipoTrabajo = Int32.Parse(ddlTipoTrabajo.SelectedValue);

        if (ddlParticipacion.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdTipoParticip = Int32.Parse(ddlParticipacion.SelectedValue);

        if (ddlPrgNPrg.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
            IdPrgNPrg = Int32.Parse(ddlPrgNPrg.SelectedValue);

        if (hid_CodComponente.Value.Trim().Length > 0)
            IdCompon = Int32.Parse(hid_CodComponente.Value);

        return oGesCons.ConsultaHH(vista, txtFecPrg.Text, txtFecFin.Text, matAvion,
                        IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);        
    }


    private void Consultar()
    {
        lblMensaje.Text = "";
        if ((txtFecPrg.Text.Length == 10) && (txtFecFin.Text.Length == 10))
        {
            char vista;
            int IdOrigen, IdTipoTrabajo, IdTipoParticip, IdPrgNPrg, IdCompon;
            string matAvion = "";
            IdOrigen = -99;
            IdTipoTrabajo = -99;
            IdTipoParticip = -99;
            IdPrgNPrg = -99;
            IdCompon = -99;

            try
            {
                if (txtMatAvion.Text.Trim().Length > 0)
                    matAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvion.Text);

                if (ddlOrigen.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
                    IdOrigen = Int32.Parse(ddlOrigen.SelectedValue);

                if (ddlTipoTrabajo.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
                    IdTipoTrabajo = Int32.Parse(ddlTipoTrabajo.SelectedValue);

                if (ddlParticipacion.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
                    IdTipoParticip = Int32.Parse(ddlParticipacion.SelectedValue);

                if (ddlPrgNPrg.SelectedValue != StringConstantes.DDL_BIND_PARAM_VAL_TODOS)
                    IdPrgNPrg = Int32.Parse(ddlPrgNPrg.SelectedValue);

                if (hid_CodComponente.Value.Trim().Length > 0)
                    IdCompon = Int32.Parse(hid_CodComponente.Value);

//                GestorConsultas oGesCons = new GestorConsultas();
                if (radDetallado.Checked)
                {
                    vista = 'D';
                    gvTrab.DataSource = CargarDatos(vista);
                    gvTrab.DataBind();
                    //Consultar(gvTrab, vista, txtFecPrg.Text, txtFecFin.Text, txtMatAvion.Text,
                    //    IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);

                    //gvTrab.DataSource = oGesCons.ConsultaHH(vista, txtFecPrg.Text, txtFecFin.Text, txtMatAvion.Text,
                    //    IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);
                    //gvTrab.DataBind();

                    divConsolidado.Style.Remove("display");
                    divConsolidado.Style.Add("display", "none");
                    divDetallado.Style.Remove("display");
                    divDetallado.Style.Add("display", "block");
                }
                else
                {
                    vista = 'C';
                    gvConsol.DataSource = CargarDatos(vista);
                    gvConsol.DataBind();
                    //Consultar(gvConsol, vista, txtFecPrg.Text, txtFecFin.Text, txtMatAvion.Text,
                    //IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);

                    //gvConsol.DataSource = oGesCons.ConsultaHH(vista, txtFecPrg.Text, txtFecFin.Text, txtMatAvion.Text,
                    //    IdOrigen, IdTipoTrabajo, IdTipoParticip, IdCompon, txtDescTrab.Text, IdPrgNPrg);
                    //gvConsol.DataBind();

                    divConsolidado.Style.Remove("display");
                    divConsolidado.Style.Add("display", "block");
                    divDetallado.Style.Remove("display");
                    divDetallado.Style.Add("display", "none");

                }
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "<strong>ERROR: Información Técnica</strong><br/>" + ex.Message;
            }
        }
        else
            lblMensaje.Text = "ERROR: La fecha de Inicio y la fecha de fin son obligatorios";
    }
    protected void gvTrab_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvTrab.PageIndex = e.NewPageIndex;
        Consultar();
    }
    protected void gvConsol_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvConsol.PageIndex = e.NewPageIndex;
        Consultar();
    }
    protected void imgToExcelCons_Click(object sender, ImageClickEventArgs e)
    {
        ExportToExcel('C');
    }
    protected void ddlOrigen_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<E_Origen> lstOrigen;
        E_Origen[] oOrigen;
        GestorOrigen oGestOrigen = new GestorOrigen();
        lstOrigen = oGestOrigen.ListarOrigen(Int32.Parse(ddlOrigen.SelectedValue));
        oOrigen = lstOrigen.ToArray();

        divATASATA.Style.Remove("display");
        divATASATA.Style.Add("display", "none");
        divTipTra.Style.Remove("display");
        divTipTra.Style.Add("display", "none");
        
        /* LIMPIAR LOS DATOS DE LOS CONTROLES */        
        txtCodAta.Text = "";
        txtCodSubAta.Text = "";
        hid_CodComponente.Value = "";
        txtTextoComponente.Text = "";
        txtDescTrab.Text = "";

        // Si el Origen contempla poblar Tipo de Trabajo
        if (oOrigen.Length > 0)
        {
            if (oOrigen[0].EsObligatorioComponente == "1")
            {
                txtCodAta.Enabled = true;
                txtCodSubAta.Enabled = true;
                txtCodCompon.Enabled = true;
                ddlTipoTrabajo.Enabled = false;
                txtDescTrab.Enabled = false;

                ddlTipoTrabajo.SelectedValue = StringConstantes.DDL_BIND_PARAM_VAL_TODOS;
                divATASATA.Style.Remove("display");
                divATASATA.Style.Add("display", "block");
            }
            else
            {
                txtCodAta.Enabled = false;
                txtCodSubAta.Enabled = false;
                txtCodCompon.Enabled = false;
                txtDescTrab.Enabled = true;
                ddlTipoTrabajo.Enabled = true;
                divTipTra.Style.Remove("display");
                divTipTra.Style.Add("display", "block");
            }
        }
        else
        {
            ddlTipoTrabajo.SelectedValue = StringConstantes.DDL_BIND_PARAM_VAL_TODOS;
        }
    }
}
